/**
 * TabelaRegistro.java
 * 
 * Projeto: SGA-LEDS
 * 
 * Rodrigo Soares Maia
 * IFES - Instituto Federal do Espírito Santo - Campus Serra
 */

package controleAtividades.cih;

import controleAtividades.cci.CtrlAtividades;
import controleInterno.cci.CtrlInterno;
import controleAtividades.cdp.RegistroAtividade;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Div;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Menuitem;
import org.zkoss.zul.Rows;
import org.zkoss.zul.Window;

public class TabelaRegistro extends GenericForwardComposer
{
    private Map mapaArgumentos;
    
    private Listbox listaRegistros;
    
    private List<RegistroAtividade> registros;

    CtrlAtividades ctrl = CtrlAtividades.getInstance();
    
    @Override
    public void doAfterCompose(Component comp) throws Exception {
        super.doAfterCompose(comp);
        
        ctrl.setTabelaRegistro(this);
        
        mapaArgumentos = Executions.getCurrent().getArg();
        
        registros = (List<RegistroAtividade>) mapaArgumentos.get("registros");
        
        this.preencheTabelaRegistros(registros);
    }
    
    public void addRegistro(RegistroAtividade r) {
        String data = this.formataData(r.getHoraFim());
        
        Listitem linha = new Listitem(data, r);
        
        linha.appendChild(new Listcell(this.formataHora(r.getHoraInicio())));
        linha.appendChild(new Listcell(this.formataHora(r.getHoraFim())));
        linha.appendChild(new Listcell(String.format("%.1f", r.getDuracao())));
        linha.appendChild(new Listcell(r.getColaborador().getAtividade().toString()));
        linha.appendChild(new Listcell(r.getDescricao()));

        linha.setParent(listaRegistros);
    }
    
    public void preencheTabelaRegistros(List<RegistroAtividade> registros)
    {
        if (registros != null)
        {
            for (int i = 0; i < registros.size(); i++) {
                RegistroAtividade r = registros.get(i);

                System.out.println("Colocando na lista...");
                System.out.println(r.getHoraInicio());
                System.out.println(r.getHoraFim());

                String data = this.formataData(r.getDia());
                String inicio = this.formataHora(r.getHoraInicio());
                String fim = this.formataHora(r.getHoraFim());

                String duracao = String.format("%.1f", r.getDuracao());

                Listitem linha = new Listitem(data, r);

                linha.appendChild(new Listcell(inicio));
                linha.appendChild(new Listcell(fim));
                linha.appendChild(new Listcell(duracao));
                linha.appendChild(new Listcell(r.getColaborador().getAtividade().toString()));
                linha.appendChild(new Listcell(r.getDescricao()));

                linha.setParent(listaRegistros);
            }
        }
    }
    
    public void atualizarTabelaRegistros(List<RegistroAtividade> registros) {
        //limpando a lista
        listaRegistros.getItems().clear();
        
        //adicionando os registros os registros
        this.preencheTabelaRegistros(registros);
    }

    public void refreshRegistros(RegistroAtividade r) {
        for (int i = 0; i < listaRegistros.getItemCount(); i++) {
            if (listaRegistros.getItemAtIndex(i).getValue() == r) {
                listaRegistros.getItemAtIndex(i).getChildren().clear();
                listaRegistros.getItemAtIndex(i).appendChild(new Listcell(this.formataData(r.getHoraFim())));
                listaRegistros.getItemAtIndex(i).appendChild(new Listcell(this.formataHora(r.getHoraInicio())));
                listaRegistros.getItemAtIndex(i).appendChild(new Listcell(this.formataHora(r.getHoraFim())));
                listaRegistros.getItemAtIndex(i).appendChild(new Listcell(String.format("%.1f", r.getDuracao())));
                listaRegistros.getItemAtIndex(i).appendChild(new Listcell(r.getColaborador().getAtividade().toString()));
                listaRegistros.getItemAtIndex(i).appendChild(new Listcell(r.getDescricao()));
                break;
            }
        }
    }
    
    public String formataData(Calendar data){
        SimpleDateFormat s = new SimpleDateFormat("dd/MM/yyyy");
        String dataFormatada = s.format(data.getTime());
        
        return dataFormatada;
    }
    
    public String formataHora(Calendar data){
        SimpleDateFormat s = new SimpleDateFormat("HH:mm");
        String horaFormatada = s.format(data.getTime());
        
        return horaFormatada;
    }
}
